//生成UUID随机数
function getUuid () {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        const r = Math.random() * 16 | 0
        const v = c === 'x' ? r : (r & 0x3 | 0x8)
        return v.toString(16)
    })
}
// getUuid() // "7cb5a8fe-876a-495c-8b0d-99e413d7373b"

//生成UUID随机数
function buildUUID () {
    const hexList = []
    for (let i = 0; i <= 15; i++) {
        hexList[i] = i.toString(16)
    }
    let uuid = ''
    for (let i = 1; i <= 36; i++) {
        if (i === 9 || i === 14 || i === 19 || i === 24) {
            uuid += '-'
        } else if (i === 15) {
            uuid += 4
        } else if (i === 20) {
            uuid += hexList[(Math.random() * 4) | 8]
        } else {
            uuid += hexList[(Math.random() * 16) | 0]
        }
    }
    return uuid.replace(/-/g, '')
}
// buildUUID()  // 'c15f49b872934e2c90fb90b5fd4f6379'

//利用随机数加时间戳
function buildShortUUID () {
    let unique = 0
    const time = Date.now()
    const random = Math.floor(Math.random() * 1000000000)
    // eslint-disable-next-line no-undef
    unique++
    return random + unique + String(time)
}
// buildShortUUID()  // '301882341657003878583'

//指定长度和基数
function getUuid(len, radix) {
    var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
    let uuid = []
    let i
    radix = radix || chars.length

    if (len) {
        // Compact form
        for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]
    } else {
        // rfc4122, version 4 form
        let r

        // rfc4122 requires these characters
        uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
        uuid[14] = '4'

        // Fill in random data.  At i==19 set the high bits of clock sequence as
        // per rfc4122, sec. 4.1.5
        for (i = 0; i < 36; i++) {
            if (!uuid[i]) {
                r = 0 | Math.random() * 16
                uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]
            }
        }
    }
    return uuid.join('')
}
// getUuid(16, 16) // '277571702EE33E11'